﻿/*
 ***************************************************************************
 * Microsoft Visual C# .NET
 * 名称：       Shpm.App.Master.Dao.DishDao
 * 类型：       数据库操作层
 * 功能说明：   对菜肴信息的操作
 * 作者：       谈
 * 创建日期：   2008/01/02
 * 修改日期     修改者      修改内容
 * 
 * 
 * ---
 ***************************************************************************
*/

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using Shpm.System.Db;
using Shpm.App.Commons.Db.Beans.Master;
using Shpm.App.Master.Bean;
using Shpm.App.Input.Bean;

namespace Shpm.App.Master.Dao
{
    public class DishDao : ShpmBaseDao
    {
        public DishDao()
        {

        }

        // 从数据字典中取得画面列表项内容
        public const string FIND_BY_CATALOG = "CommonDictionary.FindByCatalog";

        //读取菜肴信息
        public const string GET_DISH = "Dish.GetDish";
        //菜肴列表
        public const string LIST_DISH = "Dish.ListResult";
        //食品结构
        public const string LIST_DISH_FOOD = "Dish.ListDishFood";
        //插入菜肴信息
        public const string INSERT_DISH = "Dish.InsertDish";
        //插入食品结构
        public const string INSERT_DISH_FOOD = "Dish.InsertDishFood";
        //更新菜肴信息
        public const string UPDATE_DISH = "Dish.UpdDish";
        //删除食品
        public const string DELETE_DISH = "Dish.DelDish";
        //删除食品结构
        public const string DELETE_DISH_FOOD = "Dish.DelFood";
        //更新图片
        public const string UPDATE_PHOTO = "Dish.UpdPhoto";

        /*
         *名称： FindByCatalog
         *功能： 取得数据字典列表对象。
         *参数： paramBean - 检索参数
         *返回： 数据字典列表 
         *说明： 从数据字典中取得画面列表项内容
        */
        public IList FindByCatalog(CommonDictionaryBean paramBean)
        {
            return base.QueryForList(FIND_BY_CATALOG, paramBean);
        }

        /*
         *名称： GetDish
         *功能： 读取对象。
         *参数： paramBean 
         *返回： 读取的对象
         *说明： 
        */
        public DishBean GetDish(DishBean paramBean)
        {
            return (DishBean)base.QueryForObject(GET_DISH, paramBean);
        }

        /*
         *名称： ListDishFood
         *功能： 读取对象。
         *参数： paramBean 
         *返回： IList
         *说明： 
        */
        public IList ListDish(DishBean paramBean)
        {
            return base.QueryForList(LIST_DISH, paramBean);
        }

        /*
         *名称： ListDishFood
         *功能： 读取对象。
         *参数： paramBean 
         *返回： IList
         *说明： 
        */
        public IList ListDishFood(DishFoodBean paramBean)
        {
            return base.QueryForList(LIST_DISH_FOOD, paramBean);
        }

        /*
         *名称： InsertDish
         *功能： 插入对象。
         *参数： paramBean 
         *返回： object
         *说明： 
        */
        public object InsertDish(DishBean paramBean)
        {

            return base.Insert(INSERT_DISH, paramBean);
        }

        /*
         *名称： InsertDishFood
         *功能： 插入对象。
         *参数： paramBean 
         *返回： object
         *说明： 
        */
        public object InsertDishFood(DishFoodBean paramBean)
        {

            return base.Insert(INSERT_DISH_FOOD, paramBean);
        }

        /*
         *名称： UpdPhoto
         *功能： 更新对象。
         *参数： paramBean 
         *返回： int
         *说明： 
        */
        public int UpdPhoto(DishBean paramBean)
        {
            return base.Update(UPDATE_PHOTO, paramBean);
        }

        /*
         *名称： DeleteDish
         *功能： 删除对象。
         *参数： paramBean 
         *返回： int
         *说明： 
        */
        public int DeleteDish(DishBean paramBean)
        {
            try
            {
                base.BeginTransaction();
                base.Delete(DELETE_DISH, paramBean);
                DishFoodBean foodBean = new DishFoodBean();
                foodBean.DishId = paramBean.DishId;
                this.DeleteDishFood(foodBean);
                base.CommitTransaction();
                return 1;
            }
            catch (DataAccessException e)
            {
                Console.WriteLine("********** Exec  sql error! **********");
                Console.WriteLine(e.InnerException);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                base.RollBackTransaction();
                return 0;
            }
        }

        /*
         *名称： DeleteDishFood
         *功能： 删除对象。
         *参数： paramBean 
         *返回： int
         *说明： 
        */
        public int DeleteDishFood(DishFoodBean paramBean)
        {
            return base.Delete(DELETE_DISH_FOOD, paramBean);
        }

        /*
         *名称： UpdateDish
         *功能： 更新对象。         *参数： paramBean 
         *返回： int
         *说明： 
        */
        public int UpdateDish(DishBean paramBean)
        {
            return base.Update(UPDATE_DISH, paramBean);
        }

        /*
         *名称： UpdateDishLst
         *功能： 事务处理函数
         *参数： paramBean
         *返回： datalist，str
         *说明： 无
         */
        public int UpdateDishLst(IList datalist, DishBean dishBean,int dishId)
        {
            try
            {
                base.BeginTransaction();
                this.UpdateDish(dishBean);
                if (dishBean.Photo != null)
                {
                    this.UpdPhoto(dishBean);
                }
                DishFoodBean foodBean = new DishFoodBean();
                foodBean.DishId = dishId;
                this.DeleteDishFood(foodBean);
                if (datalist.Count > 0)
                {
                    foreach (DishFoodBean dataBean in datalist)
                    {
                        this.InsertDishFood(dataBean);
                    }
                }
                base.CommitTransaction();

                return 1;
            }
            catch (DataAccessException e)
            {
                Console.WriteLine("********** Exec  sql error! **********");
                Console.WriteLine(e.InnerException);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                base.RollBackTransaction();
                return 0;
            }
            finally
            {

            }
        }

        /*
         *名称： UpdateDishLst
         *功能： 事务处理函数
         *参数： paramBean
         *返回： datalist，str
         *说明： 无
         */
        public int InsertDishFoodLst(IList datalist,int dishId)
        {
            try
            {
                base.BeginTransaction();
                DishFoodBean foodBean = new DishFoodBean();
                foodBean.DishId = dishId;
                this.DeleteDishFood(foodBean);
                if (datalist.Count > 0)
                {
                    foreach (DishFoodBean dataBean in datalist)
                    {
                        this.InsertDishFood(dataBean);
                    }
                }
                base.CommitTransaction();

                return 1;
            }
            catch (DataAccessException e)
            {
                Console.WriteLine("********** Exec  sql error! **********");
                Console.WriteLine(e.InnerException);
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                base.RollBackTransaction();
                return 0;
            }
            finally
            {

            }
        }
    }
}